package com.hup.restTimer.model;

import com.alibaba.fastjson.annotation.JSONField;
import com.hup.utils.commons.io.BaseConfig;
import com.hup.utils.swing.ColorUtil;
import com.hup.utils.swing.FrameUtil.Gravity;
import com.hup.utils.swing.model.BaseWindowConfig;
import lombok.Data;

/**
 * @author hugan
 * @date 2022/10/1
 */
@Data
public class AppConfig implements BaseConfig<AppConfig> {

    /**
     * 字体集
     */
    public String[] fontNames = {
            "黑体",
            "宋体",
            "隶书",
            "华文琥珀",
            "华文行楷",
            "华文彩云",
            "Arial",
            "Britannic",
            "Impact",
    };

    /**
     * app单例占用的端口号
     */
    public int appPort = 18668;

    //一般设置
    /**
     * 久坐时长,单位ms
     */
    public long sitTimeMax = 35 * 60000;
    public BaseWindowConfig restWindowConfig = new BaseWindowConfig();

    //提醒文本
    /**
     * 提醒文本.模板,如"已久坐 #"
     */
    public String tipsTemplate = "已久坐 #";
    public String tipsTemplateRest = "已休息 #";
    public String tipsFont = "华文琥珀";
    public int tipsFontSize = 150;
    public int tipsColor = ColorUtil.getColor(68, 28, 18, 255);
    /**
     * 文本位置, {@link Gravity}
     */
    public int tipsGravity = Gravity.TOP_CENTER.value;
    /**
     * 文本在屏幕边缘的边距
     */
    public int tipsMargin = 8;
    /**
     * 文字描边
     */
    public boolean tipsOutline = true;

    //休息背景图
    public boolean imageShow;
    /**
     * 鼠标穿透
     */
    public boolean imagePenetration;
    /**
     * 不透明度, 取值[10,255](实际以ui为准), 越大越不透明
     */
    public int imageAlpha = 200;
    /**
     * 本地图片路径,nullable
     */
    public String imagePath;
    /**
     * 换图间隔,单位ms
     */
    public int imageChangeTime = 30000;
    /**
     * 随机播放
     */
    public boolean imageRandom;


    //内存字段
    /**
     * 关闭久坐提醒
     */
    @JSONField(serialize = false)
    public boolean notTips;
    /**
     * 休息的开始时间
     */
    @JSONField(serialize = false)
    public long restTimeSt;
    /**
     * 上次休息的结束时间
     */
    @JSONField(serialize = false)
    public long restTimeLastEd;
    /**
     * 需要休息/要展示提醒弹层
     */
    @JSONField(serialize = false)
    public boolean isNeedRest;
    /**
     * 正在休息
     */
    @JSONField(serialize = false)
    public boolean isResting;
    /**
     * 不支持鼠标穿透
     */
    @JSONField(serialize = false)
    public boolean notSupportPenetration;


    @Override
    public boolean afterLoadFromFileOrReset(AppConfig fileConfig) {
        return fileConfig == null;
    }

}
